home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 2 of 2).iso / games / g030.dms / in.adf / Match_Cards.AMOS / Match_Cards.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  2010-11-13  |  8.5 KB  |  396 lines

  1. Screen Open 0,320,256,16,LORES
  2. Flash Off : Colour 3,$666
  3. Cls 0 : Curs Off 
  4. 'Load "df0:cardsamples.abk"
  5. Dim Q(2),DD(40),RD(40),MK(20),SCORE(2),C(15),NAM$(5),HSCORE(5)
  6. Global RD(),MK(),Q(),SCORE(),LEVEL,TM,SND,H,G1,G2,PEOPLE,DD(),NT$,C(),NAM$(),HSCORE()
  7. 'MAKENEWFILE 
  8. Screen Open 2,320,256,16,Lowres
  9. Screen Open 1,320,256,16,Lowres
  10. Cls 0
  11. TITLE1
  12. TITLE2
  13. TITLE3
  14. BG:
  15. Show 
  16. H=2001 : LEVEL=1 : G1=0 : G2=0
  17. Cls 0
  18. ST:
  19. For N=1 To 20 : MK(N)=0 : Next 
  20. For N=1 To 40 : DD(N)=0 : Next 
  21. Limit Mouse X Hard(0),Y Hard(0) To X Hard(319),Y Hard(190)
  22. Cls 0,0,0 To 320,193
  23. Auto View Off 
  24. GRAFIX[LEVEL]
  25. Screen 1 : Screen To Front 1
  26. MCULOR
  27. Put Block 1,0,194
  28. COUNT_CLIK
  29. GAMEBOXREP
  30. SND=1 : LEVELPRT : DSCORE[0,1] : DSCORE[0,2] : SND=0
  31. MIXEM : Auto View On : View 
  32. SHUFFLE[12]
  33. SETUP
  34. COVER_UP
  35. SCORE(1)=0
  36. '
  37. GAME
  38. '
  39. LEVEL=LEVEL+1
  40. If LEVEL=9
  41.    GAMEFINISH
  42. Else 
  43.    Wait 25
  44.    Sam Play 6,5,4600
  45.    DSCORE[-SCORE(1),1]
  46.    DSCORE[-SCORE(2),2]
  47.    Goto ST
  48. End If 
  49. Wait Key 
  50. Goto BG
  51. '*********************************************************** 
  52. Procedure GAME
  53.    Repeat 
  54.       For N=1 To PEOPLE
  55.          RD:
  56.          Exit If SCORE(1)+SCORE(2)=200
  57.          Ink 11,0
  58.          Text 163,212,Str$(N)
  59.          TRY
  60.          If RD(Q(1))=RD(Q(2))
  61.             SETCHECKARRAY
  62.             FANFARE
  63.             DSCORE[10,N]
  64.             Sam Play 6,Rnd(1)+2,14000
  65.             Goto RD
  66.          Else 
  67.             CANCEL
  68.          End If 
  69.       Next N
  70.    Until SCORE(1)+SCORE(2)=200
  71.    GAMEBOX
  72. End Proc
  73. Procedure GAMEBOX
  74.    If SCORE(2)>SCORE(1)
  75.       Set Pattern 0
  76.       Ink 9
  77.       G2=G2+1
  78.       For N=0 To G2-1
  79.          Bar 242+N*8,228 To 248+N*8,234
  80.       Next N
  81.    End If 
  82.    If SCORE(1)>SCORE(2)
  83.       Ink 9
  84.       G1=G1+1
  85.       For N=0 To G1-1
  86.          Bar 8+N*8,228 To 14+N*8,234
  87.       Next N
  88.    End If 
  89. End Proc
  90. Procedure GAMEBOXREP
  91.    Set Pattern 0
  92.    Ink 9
  93.    If G2=0 Then Goto MM
  94.    For N=0 To G2-1
  95.       Bar 242+N*8,228 To 248+N*8,234
  96.    Next N
  97.    MM:
  98.    If G1=0 Then Pop Proc
  99.    For N=0 To G1-1
  100.       Bar 8+N*8,228 To 14+N*8,234
  101.    Next N
  102. End Proc
  103. Procedure GAMEFINISH
  104.    For N=10 To 90 : Play N,1 : Play N+2,1 : Next 
  105.    If PEOPLE=1 and H>HSCORE(5) Then TRYHIGH[H]
  106.    SAVHISCORES
  107. End Proc
  108. Procedure FANFARE
  109.    For N=1 To 3
  110.       For F=1 To 2
  111.          X=(Q(F)-1) mod 10 : Y=Int((Q(F)-1)/10)
  112.          Wait 2
  113.          Ink 1
  114.          Box 32*(X)-1,48*Y-1 To 32*(X)+31,48*Y+47
  115.          Wait 2
  116.          Ink 0
  117.          Box 32*(X)-1,48*Y-1 To 32*(X)+31,48*Y+47
  118.       Next F
  119.    Next N
  120. End Proc
  121. Procedure SETCHECKARRAY
  122.    DD(Q(1))=0
  123.    DD(Q(2))=0
  124. End Proc
  125. Procedure COUNT_CLIK
  126.    Dec H
  127.    MAKEZEROES[H,4]
  128.    Ink 11,0
  129.    Text 129,237,NT$
  130. End Proc
  131. Procedure CANCEL
  132.    Wait 60
  133.    Sam Play 2,4,6600
  134.    For N=1 To 2
  135.       Ink 2,4
  136.       X=(Q(N)-1) mod 10 : Y=Int((Q(N)-1)/10)
  137.       Bar 32*(X)+1,48*Y+1 To 32*(X)+29,48*Y+45
  138.       Ink 0
  139.       Box 32*(X)-1,48*Y-1 To 32*(X)+31,48*Y+47
  140.    Next N
  141. End Proc
  142. Procedure MAKEZEROES[T,W]
  143.    NT$=Str$(T)
  144.    NT$=Right$(NT$,Len(NT$)-1)
  145.    NT$=String$("0",W-Len(NT$))+NT$
  146. End Proc
  147. Procedure DSCORE[S,PL]
  148.    SCORE(PL)=SCORE(PL)+S
  149.    For N=SCORE(PL)-S To SCORE(PL)
  150.       MAKEZEROES[N,3]
  151.       Ink 11,0
  152.       If PL=1 Then Text 28,217,NT$
  153.       If PL=2 Then Text 260,217,NT$
  154.    Next 
  155. End Proc
  156. Procedure LEVELPRT
  157.    Ink 11,0
  158.    MAKEZEROES[LEVEL,1]
  159.    Text 220,237,NT$
  160. End Proc
  161. Procedure TRY
  162.    For N=1 To 2
  163.       REDO:
  164.       Repeat 
  165.          X=Int(X Screen(X Mouse))/32+1
  166.          Y=Int(Y Screen(Y Mouse))/48
  167.          NO=X+10*Y
  168.       Until(Mouse Click=2) or(Inkey$=" ")
  169.       Q(N)=NO
  170.       '--CHECK If CARD ALREADY TURNED UP---
  171.       If DD(Q(N))=0 Then Goto REDO
  172.       '--indicate card picked--------------
  173.       Ink 1
  174.       Box 32*(X-1)-1,48*Y-1 To 32*(X)-1,48*Y+47
  175.       Ink 0
  176.       '--check if same card clicked twice--
  177.       If N=2 and Q(1)=Q(2) Then Goto REDO
  178.       Volume 6,30 : Sam Play 6,4,8000 : Wait 5 : Volume 6,63
  179.       Paste Bob 32*(X-1),48*Y,RD(NO)
  180.       '   Play 6,1 
  181.       COUNT_CLIK
  182.    Next N
  183.    '
  184. End Proc
  185. Procedure SHUFFLE[TM]
  186.    For T=1 To TM
  187.       Wait Vbl 
  188.       For N=0 To 39
  189.          'Wait 1
  190.          B=Rnd(19)+1
  191.          Paste Bob 32*(N mod 10),48*Int(N/10),B
  192.       Next N
  193.    Next T
  194. End Proc
  195. Procedure SETUP
  196.    For N=0 To 39
  197.       B=RD(N+1)
  198.       Paste Bob 32*(N mod 10),48*Int(N/10),B
  199.    Next N
  200.    'Look Time 
  201.    Wait 50
  202. End Proc
  203. Procedure COVER_UP
  204.    Ink 2,4
  205.    Set Pattern Rnd(15)+2
  206.    For X=0 To 39
  207.       Wait 2
  208.       Read N
  209.       Bar 32*(N mod 10)+1,48*Int(N/10)+1 To 32*(N mod 10)+29,48*Int(N/10)+45
  210.    Next 
  211.    Data 0,1,2,3,4,5,6,7,8,9,19,29,39,38,37,36,35,34,33,32,31,30
  212.    Data 20,10,11,12,13,14,15,16,17,18,28,27,26,25,24,23,22,21
  213.    'Data 30,20,10,0,1,11,21,31,32,22,12,2,3,13,23,33,34,24,14,4,5,15,25,35
  214.    'Data 36,26,16,6,7,17,27,37,38,28,18,8,9,19,29,39
  215. End Proc
  216. Procedure MIXEM
  217.    For N=1 To 40
  218.       AGAIN:
  219.       Q=Rnd(19)+1
  220.       If MK(Q)=2 Then Goto AGAIN
  221.       Inc MK(Q)
  222.       RD(N)=Q
  223.       DD(N)=1
  224.    Next 
  225. End Proc
  226. Procedure GRAFIX[LEVEL]
  227.    'Load Iff "data:dp2.pics/cards1" 
  228.    'Spack 1 To 8
  229.    Unpack 8 To 2
  230.    If LEVEL=1
  231.       Get Block 1,0,194,319,54
  232.       GCULOR
  233.    End If 
  234.    If LEVEL=1 or LEVEL=2 Then BK=8
  235.    If LEVEL=3 or LEVEL=4 Then BK=7
  236.    If LEVEL=5 or LEVEL=6 Then BK=9
  237.    If LEVEL=7 or LEVEL=8 Then BK=10
  238.    Unpack BK To 2
  239.    For N=0 To 9
  240.       If LEVEL=1 or LEVEL=3 or LEVEL=5 or LEVEL=7 Then Get Bob N+1,N*32+1,0 To N*32+32,47
  241.       If LEVEL=2 or LEVEL=4 or LEVEL=6 or LEVEL=8 Then Get Bob N+1,N*32+1,96 To N*32+32,143
  242.    Next N
  243.    For N=0 To 9
  244.       If LEVEL=1 or LEVEL=3 or LEVEL=5 or LEVEL=7 Then Get Bob N+11,N*32+1,48 To N*32+32,95
  245.       If LEVEL=2 or LEVEL=4 or LEVEL=6 or LEVEL=8 Then Get Bob N+11,N*32+1,144 To N*32+32,191
  246.    Next N
  247.    'Cls 0 
  248.    Screen 1
  249. End Proc
  250. Procedure GCULOR
  251.    For N=0 To 15
  252.       C(N)=Colour(N)
  253.    Next 
  254. End Proc
  255. Procedure MCULOR
  256.    For N=0 To 15
  257.       Colour N,C(N)
  258.    Next 
  259. End Proc
  260. Procedure TRYHIGH[SCR]
  261.    MYSCORE=SCR
  262.    SOGHT
  263.    SHOHIGHSCORES
  264.    Pen 2
  265.    Locate 26,22 : Print Using "#####";MYSCORE
  266.    Locate 10,22 : Curs On 
  267.    A$=""
  268.    For N=1 To 8
  269.       ZZ: Q$=Inkey$
  270.       If Q$=""
  271.          Goto ZZ
  272.       End If 
  273.       Exit If Q$=Chr$(13)
  274.       A$=A$+Q$
  275.       Print Right$(Q$,1);
  276.    Next 
  277.    Curs Off : Bell 
  278.    For N=4 To 1 Step -1
  279.       NAM$(N+1)=NAM$(N)
  280.       HSCORE(N+1)=HSCORE(N)
  281.    Next N
  282.    NAM$(1)=A$ : HSCORE(1)=MYSCORE
  283.    SOGHT
  284.    SHOHIGHSCORES
  285. End Proc
  286. Procedure SHOHIGHSCORES
  287.    Hide : Curs Off 
  288.    Cls 0
  289.    Ink 2,0
  290.    Set Pattern 9
  291.    Bar 10,30 To 310,210
  292.    Set Pattern 0
  293.    Ink 0
  294.    Bar 30,50 To 290,190
  295.    Pen 4 : Paper 0
  296.    Ink 4,0 : Box 113,60 To 214,74
  297.    Locate 15,8 : Print "HIGH SCORES"
  298.    Pen 6
  299.    For N=1 To 5
  300.       Locate 10,2*(N+5) : Print Upper$(NAM$(N))
  301.       Locate 27,2*(N+5) : Print Using "####";HSCORE(N)
  302.    Next : Show 
  303. End Proc
  304. Procedure SOGHT
  305.    Repeat 
  306.       MARK=0
  307.       For N=1 To 4
  308.          If HSCORE(N)<HSCORE(N+1)
  309.             T=HSCORE(N)
  310.             T$=NAM$(N)
  311.             HSCORE(N)=HSCORE(N+1)
  312.             NAM$(N)=NAM$(N+1)
  313.             HSCORE(N+1)=T
  314.             NAM$(N+1)=T$
  315.             MARK=1
  316.          End If 
  317.       Next N
  318.    Until MARK=0
  319. End Proc
  320. Procedure LODEHISCORES
  321.    Open In 1,"HISCORE.AMOS"
  322.    For N=1 To 5
  323.       Input #1,NAM$(N)
  324.       Input #1,HSCORE(N)
  325.    Next N
  326.    Close 1
  327. End Proc
  328. Procedure SAVHISCORES
  329.    Open Out 1,"HISCORE.AMOS"
  330.    For N=1 To 5
  331.       Print #1,NAM$(N)
  332.       Print #1,HSCORE(N)
  333.    Next N
  334.    Close 1
  335. End Proc
  336. Procedure MAKENEWFILE
  337.    For N=1 To 5
  338.       Read NAM$(N)
  339.       Read HSCORE(N)
  340.    Next N
  341.    Data "GERMAINE",210,"AMELIA",400,"CHARLEINE",620,"DOLLY",322,"ABALENE",120
  342.    SAVHISCORES
  343. End Proc
  344. Procedure TITLE2
  345. LODEHISCORES
  346. SOGHT
  347. SHOHIGHSCORES
  348. Pen 5 : Paper 0
  349. TITLE$=".... M A T C H C A R D S ...."
  350. Repeat 
  351.    Locate 6,1
  352.    For N=1 To Len(TITLE$) : Pen Rnd(5)+1 : Print Mid$(TITLE$,N,1); : Next 
  353.    Pen 13 : Locate 13,28 : Print "Press S to Start"
  354. Until Upper$(Inkey$)="S"
  355. End Proc
  356. Procedure TITLE3
  357. Cls 0 : Pen 6
  358. Locate 4,1 : Print "One Player plays all Eight Levels,"
  359. Locate 4,3 : Print "To Finish with Maximum Kliks Left."
  360. Locate 5,5 : Print "Two Players play each other,"
  361. Locate 12,6 : Print "to win each Level."
  362. Curs Off : Pen 1 : Paper 0
  363. Locate 6,24 : Print "Number of Players (1 or 2) "
  364. Pen 4
  365. Locate 1,10 : Print "Use RIGHT MOUSE Button or SPACE BAR"
  366. Pen 6 : Locate 12,12 : Print "To select Cards"
  367. Pen 4 : Locate 12,14 : Print "During the Game";
  368. WW: A$=Inkey$ : If A$="" Then Goto WW
  369. If A$="1" Then PEOPLE=1
  370. If A$="2" Then PEOPLE=2
  371. If Val(A$)>2 or Val(A$)=0 Then Goto WW
  372. Cls 0
  373. End Proc
  374. Procedure TITLE1
  375. Auto View Off 
  376. B=1
  377. Repeat 
  378. Auto View Off 
  379. GRAFIX[B]
  380. Get Sprite Palette 
  381. Screen To Front 1
  382. Pen 5 : Paper 0
  383. Locate 7,30 : Print "Hold Spacebar to Continue"
  384. TITLE$=".... M A T C H C A R D S ...."
  385. Curs Off 
  386. Auto View On 
  387. K=0
  388. Repeat 
  389. SHUFFLE[1]
  390.    Locate 5,27
  391.    For N=1 To Len(TITLE$) : Pen Rnd(5)+1 : Print Mid$(TITLE$,N,1); : Next 
  392. Inc K
  393. Until K=6
  394. Add B,1,1 To 8
  395. Until Inkey$<>""
  396. End Proc